package com.schoolhelper.social.service;

import com.schoolhelper.social.domain.Friendship;
import com.schoolhelper.social.dto.FriendRequestDTO;
import com.schoolhelper.social.dto.FriendDTO;
import java.util.List;

public interface FriendshipService {
    
    /**
     * 发送好友请求
     * @param userId 发起请求的用户ID
     * @param friendId 被添加的好友ID
     * @param remark 备注
     * @return 是否成功
     */
    boolean sendFriendRequest(Long userId, Long friendId, String remark);
    
    /**
     * 处理好友请求
     * @param requestId 请求ID
     * @param accept 是否接受（true-接受，false-拒绝）
     * @return 是否成功
     */
    boolean handleFriendRequest(Long requestId, boolean accept);
    
    /**
     * 获取用户的好友列表
     * @param userId 用户ID
     * @return 好友列表
     */
    List<FriendDTO> getUserFriends(Long userId);
    
    /**
     * 获取待确认的好友请求
     * @param userId 用户ID
     * @return 好友请求列表
     */
    List<FriendRequestDTO> getPendingRequests(Long userId);
    
    /**
     * 获取发出的好友请求
     * @param userId 用户ID
     * @return 发出的请求列表
     */
    List<Friendship> getSentRequests(Long userId);
    
    /**
     * 删除好友
     * @param userId 用户ID
     * @param friendId 好友ID
     * @return 是否成功
     */
    boolean deleteFriend(Long userId, Long friendId);
    
    /**
     * 检查是否为好友关系
     * @param userId 用户ID
     * @param friendId 好友ID
     * @return 是否为好友
     */
    boolean isFriend(Long userId, Long friendId);
    
    /**
     * 检查两个用户是否为好友关系
     * @param userId1 用户1ID
     * @param userId2 用户2ID
     * @return 是否为好友
     */
    boolean areFriends(Long userId1, Long userId2);
    
    /**
     * 更新好友备注
     * @param userId 用户ID
     * @param friendId 好友ID
     * @param remark 新备注
     * @return 是否成功
     */
    boolean updateFriendRemark(Long userId, Long friendId, String remark);
}